﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Descriptions;
using System.IO;

namespace LPMEDEditor
{
    public partial class LPMEDNewCodeFileDialog : NewCodeFileDialog
    {
        List<string> AddedModulesNames;

        public LPMEDNewCodeFileDialog(List<string> AddedModulesNames)
        {
            InitializeComponent();

           
            this.docTypeDescription.Text = "Добавление нового LPMED - файла типа ";
       
            this.docTypeIcon.Image = Properties.Resources.LPMED;
            this.AddedModulesNames = AddedModulesNames;

            int i = 1;
            while (AddedModulesNames.Contains("LPMED_" + i.ToString()))
              i += 1;
            this.newFilePathTxtBx.Text = "LPMED_" + i.ToString();
            
            }

        private void NameFileTextBox_Validating(object sender, CancelEventArgs e)
        {
            //if (DialogResult == AcceptButton.DialogResult)
            {
                string name = newFilePathTxtBx.Text.Trim();
                int indx = name.IndexOfAny(Path.GetInvalidFileNameChars());
                if (indx > 0)
                {
                    errorProvider1.SetError(newFilePathTxtBx, "Имя файла не может содержать символ: " + name[indx]);
                    e.Cancel = true;
                }
                if (name == "")
                {
                    errorProvider1.SetError(newFilePathTxtBx, "Имя файла должно быть задано");
                    e.Cancel = true;
                }
            }
        }

        private void NameFileTextBox_Validated(object sender, EventArgs e)
        {
            //if (DialogResult == AcceptButton.DialogResult)
            {

                string name = newFilePathTxtBx.Text.Trim();
                if (!name.EndsWith("lpm"))
                {
                    name = name.Insert(name.Length, ".lpm");
                }
                FilePath = name;
                errorProvider1.SetError(newFilePathTxtBx, "");
            }
        }
        private void OKButton_Click(object sender, EventArgs e)
        {
          if (this.AddedModulesNames.Contains(Path.GetFileNameWithoutExtension(FilePath)))
          {
              Utility.Error(Utility.Errors.NameAlreadyExists, "Измените имя.");              
             DialogResult = DialogResult.None;
          }
            if (!ValidateChildren())
                DialogResult = DialogResult.None; // Валидация прошла неуспешно, отменяем закрытие формы
        }
    }
}
